home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / nikto / plugins / nikto_robots.plugin < prev    next >
Text File  |  2005-10-19  |  2KB  |  67 lines

  1. #VERSION,1.05
  2. #LASTMOD,05.27.2003
  3. # (c) 2001-2005 cirt.net, All Rights Reserved
  4. # HTTP headers check
  5.  
  6. # This software is distributed under the terms of the GPL, which should have been received
  7. # with a copy of this software in the "LICENSE.txt" file.
  8.  
  9. # this checks out the robots.txt file
  10.  
  11. sub nikto_robots
  12. {
  13.  (my $RES , $CONTENT) = fetch("/robots.txt","GET");
  14.  
  15.  if ($RES eq 200)  # got one!
  16.   { 
  17.    my ($DIRS, $RFILES) = "";
  18.    my $DISCTR=0;
  19.    my @DOC=split(/\n/,$CONTENT);
  20.    foreach my $line (@DOC)
  21.     {
  22.      $line = char_escape($line);
  23.      if ($line =~ /disallow/i)  # hmmm...
  24.       {
  25.        chomp($line);
  26.        $line =~ s/\#.*$//;
  27.        $line =~ s/(^\s+|\s+$)//g;
  28.        $line =~ s/\s+/ /g;
  29.        $line =~ s/\\t/ /g;
  30.        $line =~ s/disallow(:)?( )?//i;
  31.        $line =~ s/\*//g;
  32.        $line =~ s/\/+/\//g;
  33.  
  34.        if ($line eq "") { next; }
  35.        # try to figure out file vs dir... just guess...
  36.        if (($line !~ /\./) && ($line !~ /\/$/)) { $line .= "/"; }
  37.  
  38.        $line=LW::utils_normalize_uri($line);
  39.  
  40.        # figure out dirs/files...
  41.        my $realdir=LW::utils_get_dir($line);
  42.        my $realfile=$line;
  43.        $realfile =~ s/^$realdir//;
  44.        
  45.        nprint("- robots.txt entry dir:$realdir -- file:$realfile","d");
  46.        if (($realdir ne "") && ($realdir ne "/")) { $DIRS{$realdir}++; }
  47.        if (($realfile ne "") && ($realfile ne "/")) { $RFILES{$realfile}++; }
  48.        $DISCTR++;
  49.       } # end if $line =~ disallow
  50.     } # end foreach my $line (@DOC)_
  51.     
  52.   # add them  to mutate dir/file
  53.   foreach my $d (sort keys %DIRS) { $CONFIG{MUTATEDIRS} .= " $d"; $CONFIG{PASSWORDDIRS} .= " $d"; }
  54.   foreach my $f (sort keys %RFILES) { $CONFIG{MUTATEFILES} .= " $f"; }
  55.  
  56.   if ($DISCTR eq 1) 
  57.      { nprint("+ /robots.txt - contains $DISCTR 'disallow' entry which should be manually viewed (added to mutation file lists) (GET)."); }
  58.   elsif ($DISCTR > 1) 
  59.      { nprint("+ /robots.txt - contains $DISCTR 'disallow' entries which should be manually viewed (added to mutation file lists) (GET)."); }
  60.   else 
  61.      { nprint("- /robots.txt - retrieved but it does not contain any 'disallow' entries, which is odd. This should be checked manually.(GET)"); }
  62.   $VULS++;
  63.   } # end if $RES eq 200
  64. }
  65.  
  66. 1;
  67.